package com.dapeis.pay.swiftpass.util;

import java.util.Map;

/**
 * 威富通工具类 Title:SPPayUtil.java SPPayUtil Description:
 * 
 * @author yuanyong
 * @date 2017年5月5日 上午10:50:43 Email: hzyuanyong@126.com
 *
 */
public class SPPayUtil {

    /**
     * 服务器(威富通成功 返回标识)
     */
    public static final String PROPERTY_RESULT_CODE = "result_code";

    public static final String VLAUE_RESULT_CODE_SUCCESS = "0";// 非0失败

    /**
     * 威富接口返回标识
     */
    public static final String PROPERTY_STATUS = "status";
    public static final String VALUE_STATUS_SUCCESS = "0"; // 非0失败

    /**
     * 支付结果
     */

    public static final String PROPERTY_PAY_RESULT = "pay_result";
    public static final String VALUE_PAY_RESULT_SUCCESS = "0";// 支付成功

    /**
     * 交易结果字段
     */
    public static final String PROPERTY_TRADE_STATE = "trade_state";

    /**
     * 商户(我们)订单号
     */
    public static final String PROPERTY_OUT_TRADE_NO = "out_trade_no";
    
    /**
     * 支付金额
     */
    public static final String PROPERTY_PAY_TOTAL_FEE ="total_fee";
    

    /**
     * 交易状态
     *
     */
    public static final class TRADE_STATE {

	/**
	 * 支付成功
	 */
	public static final String SUCCESS = "SUCCESS";

	/**
	 * 转入退款
	 */
	public static final String REFUND = "REFUND";
	/**
	 * 未支付
	 */
	public static final String NOTPAY = "NOTPAY";
	/**
	 * 已关闭
	 */
	public static final String CLOSED = "CLOSED";
	/**
	 * 已冲正
	 */
	public static final String REVERSE = "REVERSR";

	/**
	 * 已撤销
	 */
	public static final String REVOK = "REVOK";
    }

    /**
     * 成功 true 失败 false
     * 
     * @param map
     * @return
     */
    public static boolean isRetSuccess(Map map) {
	return checkResut(map);
    }

    /**
     * 成功返回数据
     * @param map
     * @return
     */
    public static boolean checkResut(Map map) {
	if (null == map) {
	    return false;
	}
	if (map.containsKey(PROPERTY_RESULT_CODE)
		&& map.get(PROPERTY_RESULT_CODE).equals(
			VLAUE_RESULT_CODE_SUCCESS)) {
	    // 成功返回
	    if (map.get(PROPERTY_STATUS).equals(VALUE_STATUS_SUCCESS)) {
		return true;
	    }
	}
	return false;
    }
    /**
     * true 支付成功
     * false 支付失败
     * @param map
     * @return
     */
    public static boolean checkPayResult(Map map) {
	if (checkResut(map)) {
	    // 成功返回
	    if (map.containsKey(PROPERTY_PAY_RESULT)) {
		if (map.get(PROPERTY_PAY_RESULT).toString()
			.equals(VALUE_PAY_RESULT_SUCCESS)) {
		    return true;
		}
	    }
	}
	return false;
    }

    /**
     * 获取错误信息
     * 
     * @param map
     * @return
     */
    public static String getResultMsg(Map map) {
	if (!checkResut(map)) {
	    if(map.containsKey("message"))
		return map.get("message").toString();
	    if(map.containsKey("err_msg"))
		return map.get("err_msg").toString();
	}
	return "500";
    }

    public static String getCode(Map map) {
	if (!checkResut(map)) {
	    return map.get(PROPERTY_STATUS).toString();
	}
	return "500";
    }

}
